package com.enjoyor.soa.traffic.api.service.dubbo.dvams;

import com.enjoyor.soa.traffic.util.pojo.Page;
import com.enjoyor.soa.traffic.util.pojo.ResultPojo;

/**
 * 事故统计
 */

@SuppressWarnings("rawtypes")
public interface DubboAccidentStatService {

    /**
     * 查询事故量概况
     * 
     * @param startTime
     * @param endTime
     * @return countAll 总量 /countInjured 受伤事故数量 / countDeath 死亡事故数量 /
     *         countNotDeal 未处理事故数量 deptId 部门事故数量
     */
    public ResultPojo summaryAccident(String token, String systemkey, String startTime, String endTime);

    /**
     * 路段事故量列表
     * 
     * @param token
     * @param systemkey
     * @param startTime
     *            事故开始时间 2012-12-12 12:12:12
     * @param endTime
     *            事故结束时间 2012-12-12 12:12:13
     * @param startTimeByHour
     *            事故日内时分开始 12:00
     * @param endTimeByHour
     *            事故日内时分结束 12:13
     * @param accidentType
     *            事故类型
     * @return
     */
    public ResultPojo listBlockAccident(String token, String systemkey, String startTime, String endTime,
            String startTimeByHour, String endTimeByHour, String accidentType);

    /**
     * 路段事故量分页
     * 
     * @param token
     * @param systemkey
     * @param startTime
     *            事故开始时间 2012-12-12 12:12:12
     * @param endTime
     *            事故结束时间 2012-12-12 12:12:13
     * @param startTimeByHour
     *            事故日内时分开始 12:00
     * @param endTimeByHour
     *            事故日内时分结束 12:13
     * @param accidentType
     *            事故类型
     * @param page
     * @return
     */
    public ResultPojo pageBlockAccident(String token, String systemkey, String startTime, String endTime,
            String startTimeByHour, String endTimeByHour, String accidentType, Page page);

    /**
     * 查询当月部门事故量
     * 
     * @param month
     *            2012-12
     * @return 按部门分组，当月每日的事故量，当月总量，环比，同比
     */
    public ResultPojo overviewDeptAccidentByMonth(String token, String systemkey, String month);

    /**
     * 查询当年部门事故量
     * 
     * @param year
     *            2012
     * @return 按部门分组，当年每月的事故量，当年总量，环比
     */
    public ResultPojo overviewDeptAccidentByYear(String token, String systemkey, String year);

    /**
     * 查询自定义部门事故统计
     * 
     * @param thisDateStart
     *            本周期开始 2012-12-01 00:00:00
     * @param thisDateEnd
     *            本周期结束 2012-12-20 00:00:00
     * @param lastDateStart
     *            上周期开始 2012-11-10 00:00:00
     * @param lastDateEnd
     *            上周期结束 2012-11-30 00:00:00
     * @param accidentType
     *            事故类型
     * @return
     */
    public ResultPojo overviewDeptAccidentByCustom(String token, String systemkey, String thisDateStart,
            String thisDateEnd, String lastDateStart, String lastDateEnd, String accidentType);

    /**
     * 查询当月道路事故统计
     * 
     * @param month
     *            2012-12
     * @param positionDept
     *            部门id
     * @param roadName
     *            道路名称 模糊查询
     * @return 按道路分组，当月道路内/道路外事故量，当月总量，环比，同比
     */
    public ResultPojo overviewRoadAccidentByMonth(String token, String systemkey, String month, String positionDept,
            String roadName);

    /**
     * 查询当月道路事故统计分页
     * 
     * @param month
     *            2012-12
     * @param positionDept
     *            部门id
     * @param roadName
     *            道路名称 模糊查询
     * @return 按道路分组，当月道路内/道路外事故量，当月总量，环比，同比
     */
    public ResultPojo overviewPageRoadAccidentByMonth(String token, String systemkey, String month, String positionDept,
            String roadName, Page page);

    /**
     * 查询当年道路事故统计
     * 
     * @param year
     *            2012
     * @param positionDept
     *            部门id
     * @param roadName
     *            道路名称 模糊查询
     * @return 按道路分组，当年道路内/道路外事故量，当年总量，环比
     */
    public ResultPojo overviewRoadAccidentByYear(String token, String systemkey, String year, String positionDept,
            String roadName);

    /**
     * 查询当年道路事故统计分页
     * 
     * @param year
     *            2012
     * @param positionDept
     *            部门id
     * @param roadName
     *            道路名称 模糊查询
     * @return 按道路分组，当年道路内/道路外事故量，当年总量，环比
     */
    public ResultPojo overviewPageRoadAccidentByYear(String token, String systemkey, String year, String positionDept,
            String roadName, Page page);

    /**
     * 查询自定义道路事故统计
     * 
     * @param thisDateStart
     *            本周期开始 2012-12-01 00:00:00
     * @param thisDateEnd
     *            本周期结束 2012-12-20 00:00:00
     * @param lastDateStart
     *            上周期开始 2012-11-10 00:00:00
     * @param lastDateEnd
     *            上周期结束 2012-11-30 00:00:00
     * @param accidentType
     *            事故类型
     * @param positionDept
     *            部门id
     * @param roadName
     *            道路名称 模糊查询
     * @return 按道路分组，本周期道路内/道路外事故量，本周期总量，本周期与上周期环比
     */
    public ResultPojo overviewRoadAccidentByCustom(String token, String systemkey, String thisDateStart,
            String thisDateEnd, String lastDateStart, String lastDateEnd, String accidentType, String positionDept,
            String roadName);

    /**
     * 查询自定义道路事故统计分页
     * 
     * @param thisDateStart
     *            本周期开始 2012-12-01 00:00:00
     * @param thisDateEnd
     *            本周期结束 2012-12-20 00:00:00
     * @param lastDateStart
     *            上周期开始 2012-11-10 00:00:00
     * @param lastDateEnd
     *            上周期结束 2012-11-30 00:00:00
     * @param accidentType
     *            事故类型
     * @param positionDept
     *            部门id
     * @param roadName
     *            道路名称 模糊查询
     * @return 按道路分组，本周期道路内/道路外事故量，本周期总量，本周期与上周期环比
     */
    public ResultPojo overviewPageRoadAccidentByCustom(String token, String systemkey, String thisDateStart,
            String thisDateEnd, String lastDateStart, String lastDateEnd, String accidentType, String positionDept,
            String roadName, Page page);

    /**
     * 查询当月路段事故统计
     * 
     * @param month
     *            2012-12
     * @param positionDept
     *            部门id
     * @param roadCode
     *            道路id
     * @param blockName
     *            路段名称 模糊查询
     * @return
     */
    public ResultPojo overviewBlockAccidentByMonth(String token, String systemkey, String month, String positionDept,
            String roadCode, String blockName);

    /**
     * 查询当月路段事故统计分页
     * 
     * @param month
     *            2012-12
     * @param positionDept
     *            部门id
     * @param roadCode
     *            道路id
     * @param blockName
     *            路段名称 模糊查询
     * @return
     */
    public ResultPojo overviewPageBlockAccidentByMonth(String token, String systemkey, String month,
            String positionDept, String roadCode, String blockName, Page page);

    /**
     * 查询当年路段事故统计
     * 
     * @param year
     *            2012
     * @param positionDept
     *            部门id
     * @param roadCode
     *            道路id
     * @param blockName
     *            路段名称 模糊查询
     * @return
     */
    public ResultPojo overviewBlockAccidentByYear(String token, String systemkey, String year, String positionDept,
            String roadCode, String blockName);

    /**
     * 查询当年路段事故统计分页
     * 
     * @param year
     *            2012
     * @param positionDept
     *            部门id
     * @param roadCode
     *            道路id
     * @param blockName
     *            路段名称 模糊查询
     * @return
     */
    public ResultPojo overviewPageBlockAccidentByYear(String token, String systemkey, String year, String positionDept,
            String roadCode, String blockName, Page page);

    /**
     * 查询自定义路段事故统计
     * 
     * @param thisDateStart
     *            本周期开始 2012-12-01 00:00:00
     * @param thisDateEnd
     *            本周期结束 2012-12-20 00:00:00
     * @param lastDateStart
     *            上周期开始 2012-11-10 00:00:00
     * @param lastDateEnd
     *            上周期结束 2012-11-30 00:00:00
     * @param accidentType
     *            事故类型
     * @param positionDept
     *            部门id
     * @param roadCode
     *            道路id
     * @param blockName
     *            路段名称 模糊查询
     * @return
     */
    public ResultPojo overviewBlockAccidentByCustom(String token, String systemkey, String thisDateStart,
            String thisDateEnd, String lastDateStart, String lastDateEnd, String accidentType, String positionDept,
            String roadCode, String blockName);

    /**
     * 查询自定义路段事故统计分页
     * 
     * @param thisDateStart
     *            本周期开始 2012-12-01 00:00:00
     * @param thisDateEnd
     *            本周期结束 2012-12-20 00:00:00
     * @param lastDateStart
     *            上周期开始 2012-11-10 00:00:00
     * @param lastDateEnd
     *            上周期结束 2012-11-30 00:00:00
     * @param accidentType
     *            事故类型
     * @param positionDept
     *            部门id
     * @param roadCode
     *            道路id
     * @param blockName
     *            路段名称 模糊查询
     * @return
     */
    public ResultPojo overviewPageBlockAccidentByCustom(String token, String systemkey, String thisDateStart,
            String thisDateEnd, String lastDateStart, String lastDateEnd, String accidentType, String positionDept,
            String roadCode, String blockName, Page page);

    /**
     * 查询自定义类型事故统计 查询当前周期各类型事故量
     * 
     * @param thisDateStart
     *            本周期开始 2012-12-01 00:00:00
     * @param thisDateEnd
     *            本周期结束 2012-12-20 00:00:00
     * @param positionDept
     *            部门id
     * @param roadCode
     *            道路id
     * @param blockName
     *            路段名称 模糊查询
     * @return
     */
    public ResultPojo overviewTypeAccidentByCustom(String token, String systemkey, String thisDateStart,
            String thisDateEnd, String positionDept, String roadCode, String blockName);

    /**
     * 查询自定义类型事故总量统计
     * 
     * @param thisDateStart
     *            本周期开始 2012-12-01 00:00:00
     * @param thisDateEnd
     *            本周期结束 2012-12-20 00:00:00
     * @param positionDept
     *            部门id
     * @param roadCode
     *            道路id
     * @param blockName
     *            路段名称 模糊查询
     * @return
     */
    public ResultPojo overviewTotalTypeAccidentByCustom(String token, String systemkey, String thisDateStart,
            String thisDateEnd, String positionDept, String roadCode, String blockName);

    /**
     * 查询自定义全时段事故统计 查询两个比较周期的24小时分时事故量
     * 
     * @param thisDateStart
     *            本周期开始 2012-12-01 00:00:00
     * @param thisDateEnd
     *            本周期结束 2012-12-20 00:00:00
     * @param lastDateStart
     *            上周期开始 2012-11-10 00:00:00
     * @param lastDateEnd
     *            上周期结束 2012-11-30 00:00:00
     * @param positionDept
     *            部门id
     * @param roadCode
     *            道路id
     * @param blockCode
     *            路段id
     * @param blockName
     *            路段名称 模糊查询
     * @return
     */
    public ResultPojo overviewHourAccidentByCustom(String token, String systemkey, String thisDateStart,
            String thisDateEnd, String lastDateStart, String lastDateEnd, String positionDept, String roadCode,
            String blockCode, String blockName);

    /**
     * 查询自定义一周事故统计 查询两个比较周期的每周七日的事故量和，当前周时的平均值
     * 
     * @param thisDateStart
     *            本周期开始 2012-12-01 00:00:00
     * @param thisDateEnd
     *            本周期结束 2012-12-20 00:00:00
     * @param lastDateStart
     *            上周期开始 2012-11-10 00:00:00
     * @param lastDateEnd
     *            上周期结束 2012-11-30 00:00:00
     * @param positionDept
     *            部门id
     * @param roadCode
     *            道路id
     * @param blockCode
     *            路段id
     * @param blockName
     *            路段名称 模糊查询
     * @return
     */
    public ResultPojo overviewWeekAccidentByCustom(String token, String systemkey, String thisDateStart,
            String thisDateEnd, String lastDateStart, String lastDateEnd, String positionDept, String roadCode,
            String blockCode, String blockName);

}
